package com.telit.firecommand.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;


/**
 * 任务列表
 */
@ApiModel(description = "任务列表")
@Data
public class TaskInfoListVo {

    //主键
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty("任务ID")
    private Long id;

    //任务编号
    @ApiModelProperty("任务编号")
    private String taskCode;

    //任务标题
    @ApiModelProperty("任务标题")
    private String taskTitle;

    @ApiModelProperty("任务类型;1巡护任务,2巡林任务,3巡航任务")
    private Integer taskType;

    @ApiModelProperty("任务类型;1巡护任务,2巡林任务,3巡航任务")
    private String taskTypeName;

    //二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务
    @ApiModelProperty("二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务")
    private Integer taskTypeGrade;

    @ApiModelProperty("二级任务类型（与TASK_TYPE）相关;比如1日常巡护任务")
    private String taskTypeGradeName;

    //任务状态;1待执行，2执行中，3已完成
    @ApiModelProperty("任务状态;1待执行，2执行中，3已完成")
    private Integer state;

    @ApiModelProperty("任务状态名称")
    private String stateName;

    //任务下发时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("任务下发时间")
    private Date createTime;

    //任务截止时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("任务截止时间")
    private Date cutOffTime;

    //是否逾期
    @ApiModelProperty("是否逾期")
    private Boolean beOverdue;

    //任务开始时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("任务开始时间")
    private Date startTime;

    //任务结束时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty("任务结束时间")
    private Date endTime;

    //发起人
    @ApiModelProperty("发起人")
    private Long createBy;

    @ApiModelProperty("发起人姓名")
    private String createName;

    @ApiModelProperty("是否是单任务:1是，0多任务")
    private Integer isSingle;

    @ApiModelProperty("执行人数量：单任务1，多任务为具体人数")
    private Long executeNum;

    @ApiModelProperty("执行人ID")
    @JsonSerialize(using = ToStringSerializer.class)
    private Long executeId;

    @ApiModelProperty("执行人名称")
    private String executeName;

    @ApiModelProperty(value = "巡护距离")
    private String distance;

    @ApiModelProperty(value = "巡护持续时间")
    private String duration;

}
